﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using BigData.DataContracts.Objects.BigData.BaseTypes;

namespace BigDataFramework.Repositories.Interfaces
{
    public interface IRepository
    {
        void Create<T>(T obj);
        void Create<T>(List<T> objs);
        IQueryable<T> Read<T>(Expression<Func<T, bool>> predicate = null);
        T ReadOne<T>(Expression<Func<T, bool>> predicate);
        T ReadOne<T>(string id) where T : BigDataDBObjectBase;
        void Update<T>(T obj) where T : BigDataDBObjectBase;
        void Delete<T>(T obj) where T : BigDataDBObjectBase;
    }
}
